/**
 * 原理
 * 在use的时候执行了vuex的install
 * install执行的时候，使用的全局混入mixin
 * 全局混入了一个beforeCreate钩子函数
 * 这个钩子函数给每一个组件添加了$store属性
 * 
 * 
 * vuex的实现。
 * 核心一步操作是this.$options.store，我们通过new Vue创建出来的实例，我们输出这个实例，这个实例上有个$options对象，我们通过new Vue传递的对象
 * 我们就可以通过$options获取到。同时还有一个关键点，通过this.$parent获取到当前组件的父组件，如果没有，我们就可以认为当前组件是根组件。
 * 这样我们以后的子组件就可以通过this.$store = this.$parent.$store，这样我们就可以把store挂载到每个vue组件上并可以调用store中的方法和属性。
 * 以上这些操作就是在beforcreate生命周期完成的。通过mixin混入，注入到每个组件上。
 * 
 * vuex中的state是响应式的，我们自己如何变成响应式，new Vue实例，把state传到data中，vm.state就变成了响应式，我们借助了vue的响应式，帮我们完成。
 */